﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HA.Data
{


    /// <summary>
    /// 插值选项的基类
    /// </summary>
    [Serializable]
   public class InterpolationOption:ICloneable
    {

        public InterpolationOption()
        {
            this._idwOption = new IDWOption();

            this._krigingOption = new KrigingOption();
        }





        IDWOption _idwOption;

        /// <summary>
        /// 反距离权重的插值选项
        /// </summary>
        public IDWOption IdwOption
        {
            get { return _idwOption; }
            set { _idwOption = value; }
        }

        KrigingOption _krigingOption;

        public KrigingOption KrigingOption
        {
            get { return _krigingOption; }
            set { _krigingOption = value; }
        }

        private Scatter2D _scatter2d;

        public Scatter2D Scatter2d
        {
            get { return _scatter2d; }
            set { _scatter2d = value; }
        }

        private InterpolateType _interpolatetype = InterpolateType.IDW;
        /// <summary>
        /// 插值类型
        /// </summary>
        public InterpolateType Interpolatetype
        {
            get { return _interpolatetype; }
            set { _interpolatetype = value; }
        }


        bool _isTruncateValue = false;

        public bool IsTruncateValue
        {
            get { return _isTruncateValue; }
            set { _isTruncateValue = value; }
        }


        bool _isTruncateToDataSetMinMax = true;

        public bool IsTruncateToDataSetMinMax
        {
            get { return _isTruncateToDataSetMinMax; }
            set { _isTruncateToDataSetMinMax = value; }
        }

        double _truncateSetupMin=0;

        public double TruncateSetupMin
        {
            get { return _truncateSetupMin; }
            set { _truncateSetupMin = value; }
        }

        double _truncateSetupMax=1;

        public double TruncateSetupMax
        {
            get { return _truncateSetupMax; }
            set { _truncateSetupMax = value; }
        }

        public object Clone()
        {
            InterpolationOption obj = new InterpolationOption();
            obj =(InterpolationOption) this.MemberwiseClone();
            obj.IdwOption = new IDWOption();
            obj.IdwOption =(IDWOption) this.IdwOption.Clone();
            obj.KrigingOption = new KrigingOption();
            obj.KrigingOption =(KrigingOption) this.KrigingOption.Clone();
            return obj;
        }


    }


   



}
